//package com.gzy.studentsociety.web;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//
//@WebServlet("/mainIndex")
//public class MainIndexServlet extends HttpServlet {
//    // Servlet的具体处理逻辑，如读取数据、设置属性等
//    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        // 这里可以添加将数据设置到请求属性等操作，以便在JSP页面中展示相关内容
//        request.getRequestDispatcher("/WEB-INF/jsp/mainIndex.jsp").forward(request, response);
//    }
//}



package com.gzy.studentsociety.web;

import com.gzy.studentsociety.entity.Society;
import com.gzy.studentsociety.entity.Student;
import com.gzy.studentsociety.dao.SocietyDao;
import com.gzy.studentsociety.dao.StudentDao;
import com.gzy.studentsociety.dao.impl.SocietyDaoImpl;
import com.gzy.studentsociety.dao.impl.StudentDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

// 导入JSTL相关库，用于在Servlet中处理JSP页面中类似的逻辑
import javax.servlet.jsp.jstl.core.Config;
import javax.servlet.jsp.jstl.fmt.LocalizationContext;
//import javax.servlet.jsp.jstl.fmt.TimeZoneInfo;

//
//@WebServlet("/mainIndex")
//public class MainIndexServlet extends HttpServlet {
//
//    private SocietyDao societyDao = new SocietyDaoImpl();
//    private StudentDao studentDao = new StudentDaoImpl();
//
//    @Override
//    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        try {
//            // 获取协会数据列表并设置到请求属性中
//            List<Society> societies = getSocietiesWithDetails();
//            request.setAttribute("societies", societies);
//
//            // 设置日期格式化相关设置
////            setupDateFormat(request);
//
//            // 转发请求到mainIndex.jsp页面
//            request.getRequestDispatcher("/WEB-INF/jsp/mainIndex.jsp").forward(request, response);
//        } catch (SQLException e) {
//            // 处理数据库操作相关异常，这里可以记录日志并向用户返回错误提示页面
//            handleDatabaseException(e, request, response);
//        }
//    }
//
//    private List<Society> getSocietiesWithDetails() throws SQLException {
//        List<Society> societies = societyDao.getAllSociety();
//
//        // 对于每个协会，获取其创始人的详细信息（假设数据库中存储的是创始人的ID）
//        return societies.stream().map(society -> {
//            try {
//                Student creator = studentDao.findById(society.getSociety_creator());
//                society.setCreator(creator);
//            } catch (SQLException e) {
//                throw new RuntimeException("Failed to get creator details for society", e);
//            }
//            return society;
//        }).collect(Collectors.toList());
//    }
//
////    private void setupDateFormat(HttpServletRequest request) {
////        try {
////            // 设置日期格式化的本地化信息，这里假设使用默认的时区和语言环境
////            LocalizationContext localizationContext = Config.getLocalizationContext(request);
////            TimeZoneInfo timeZoneInfo = localizationContext.getTimeZoneInfo();
////            Config.set(request, "javax.servlet.jsp.jstl.fmt.timeZone", timeZoneInfo.getID());
////        } catch (Exception e) {
////            // 处理日期格式化设置过程中可能出现的异常，这里可以记录日志
////            handleDateFormatException(e);
////        }
////    }
//
//    private void handleDatabaseException(SQLException e, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        // 在这里可以记录详细的数据库操作异常日志，比如使用日志框架（如Log4j、Slf4j等）
//        // 示例：Logger.getLogger(MainIndexServlet.class).error("Database error", e);
//
//        // 向用户返回一个友好的错误提示页面，假设存在一个error.jsp页面用于展示错误信息
//        request.setAttribute("errorMessage", "An error occurred while retrieving data from the database.");
//        request.getRequestDispatcher("/WEB-INF/jsp/error.jsp").forward(request, response);
//    }
//
//    private void handleDateFormatException(Exception e) {
//        // 同样可以在这里记录日期格式化设置异常的日志
//        // 示例：Logger.getLogger(MainIndexServlet.class).error("Date format error", e);
//    }
//}